Operator Precedence

Operators are evaluated based on their precedence to one another in an expression.

Precedence Operator Usage Parsing Order
1 Post increment a++ Left to Right
Post decrement a--
Member operator a.b
Subscript operator a[b]
Function call a(...)
Parentheses (...)
Unit specification a{unit}
2 Pre increment    
Pre decrement --a  
Bitwise complement / Matrix inverse ~a  
Logical NOT !a  
Unary minus -a  
Unary plus +a  
Type conversion (type)a  
3 Multiply a*b Left to Right
Divide a/b
Modulo a%b
4 Add a+b Left to Right
Subtract a-b
5 Shift left a<<b Left to Right
Shift right a>>b
6 Less than a<b Left to Right
Less than or equal a<=b
Greater than a>b
Greater than or equal a>=b
7 Equal a==b Left to Right
Not equal a!=b
8 Bitwise AND a&b Left to Right
9 Bitwise XOR a^b Left to Right
10 Bitwise OR a|b Left to Right
11 Logical AND a&&b Left to Right
12 Logical OR a||b Left to Right
13 Assignment a=b Right to Left
Multiply and assign a*=b
Divide and assign a/=b
Modulo and assign a%=b
Add and assign a+=b
Subtract and assign a-=b
Shift left and assign a<<=b
Shift right and assign a>>=b
Bitwise AND and assign a&=b
Bitwise XOR and assign a^=b
Bitwise OR and assign a|=b
14 Condition a?b:c Left to Right
15 Sequence a,b Left to Right

An operator that is parsed left to right are left associative, whereas those parsed right to left are right associative.

a = b = c    <->    a = (b = c)
a + b + c    <->    (a + b) + c